Threads এবং Executors এর ব্যবহার

Computer Programming - গ্রুভি (Groovy) Concurrency in Groovy (কনকারেন্সি) |
218
218

Groovy তে Threads এবং Executors এর ব্যবহার

Groovy তে Threads এবং Executors ব্যবহৃত হয় concurrrent বা parallel কাজ পরিচালনা করতে, যার মাধ্যমে কোড দ্রুত এবং কার্যকরীভাবে একাধিক টাস্ক পরিচালনা করতে পারে। Groovy Java এর Thread এবং Executor API এর উপর ভিত্তি করে কাজ করে, তবে Groovy এর সিনট্যাক্স খুবই সহজ এবং সংক্ষিপ্ত, যা থ্রেডিং এবং কনকারেন্সি ব্যবস্থাপনাকে আরও সহজ করে তোলে।


1. Threads এর ব্যবহার

Thread একটি ক্লাস যা পারস্পরিকভাবে স্বাধীনভাবে কাজ করতে পারে। Groovy তে থ্রেড তৈরি এবং চালানোর জন্য Java থ্রেডিং API এর Thread ক্লাস ব্যবহার করা হয়, তবে Groovy তে এটি আরও সংক্ষিপ্তভাবে ব্যবহার করা যায়। সাধারণত, Groovy তে থ্রেড তৈরি করতে আপনি Thread.start() মেথড ব্যবহার করেন।

থ্রেড তৈরি এবং চালানো

Thread.start {
    println "This is running in a separate thread."
}
println "This is running in the main thread."

উপরের উদাহরণে, Thread.start ব্যবহার করে একটি নতুন থ্রেড শুরু করা হয়েছে। এর মাধ্যমে "This is running in a separate thread." স্টেটমেন্ট আলাদা থ্রেডে রান হবে, এবং "This is running in the main thread." মূল থ্রেডে চলে আসবে।

থ্রেডের সঙ্গে কাজ করার জন্য Groovy এর সহায়তা:

Groovy তে থ্রেড ব্যবহার করা অনেক সহজ এবং প্রোগ্রামারদের জন্য দ্রুত ফলাফল পাওয়া যায়।

// ফাংশন ডিফাইন করা
def task1 = { println "Task 1 is running" }
def task2 = { println "Task 2 is running" }

// দুইটি আলাদা থ্রেডে কাজ চালানো
Thread.start(task1)
Thread.start(task2)

println "Main thread is running"

এখানে দুটি আলাদা টাস্ক Thread.start() দিয়ে আলাদা থ্রেডে চালানো হয়েছে, এবং মূল থ্রেডে "Main thread is running" মেসেজটি প্রদর্শিত হবে।


2. Executors এর ব্যবহার

Executor Groovy তে থ্রেড পরিচালনার আরও উন্নত একটি উপায়, যেটি থ্রেড পুল তৈরি করে এবং স্বয়ংক্রিয়ভাবে থ্রেড ম্যানেজমেন্টের কাজ করে। ExecutorService Groovy তে ব্যবহৃত হয় বিভিন্ন থ্রেড পরিচালনা করার জন্য, যেখানে আপনি একটি থ্রেড পুল তৈরি করতে পারেন।

ExecutorService দিয়ে থ্রেড পুল তৈরি করা

import java.util.concurrent.*

def executor = Executors.newFixedThreadPool(2)

executor.submit {
    println "Task 1 is being executed in thread: ${Thread.currentThread().name}"
}

executor.submit {
    println "Task 2 is being executed in thread: ${Thread.currentThread().name}"
}

executor.shutdown()

এখানে একটি FixedThreadPool Executor তৈরি করা হয়েছে যা দুটি থ্রেড পরিচালনা করবে। দুটি টাস্ক একে একে এই থ্রেড পুলে পাঠানো হয়েছে এবং এগুলো থ্রেডে এক্সিকিউট হয়েছে।

ExecutorService এর মাধ্যমে কাজ শেষ হওয়া পর্যন্ত অপেক্ষা করা

import java.util.concurrent.*

def executor = Executors.newFixedThreadPool(3)
def futures = []

// কিছু টাস্ক যোগ করা
futures << executor.submit { println "Task 1 completed" }
futures << executor.submit { println "Task 2 completed" }
futures << executor.submit { println "Task 3 completed" }

// টাস্ক গুলোর ফলাফল প্রাপ্তির জন্য অপেক্ষা করা
futures.each { it.get() }

executor.shutdown()

এখানে submit() ব্যবহার করে Executor এ কিছু টাস্ক যোগ করা হয়েছে এবং get() মেথড ব্যবহার করে এই টাস্কগুলোর কাজ শেষ হওয়া পর্যন্ত অপেক্ষা করা হয়েছে। এর মাধ্যমে, আপনি একাধিক কাজ পরিচালনা করতে পারেন এবং একই সময়ে তাদের ফলাফলও পেতে পারেন।


3. ThreadPoolExecutor

ThreadPoolExecutor Groovy তে ExecutorService এর একটি উন্নত সংস্করণ, যা থ্রেড পুলের আকার এবং তার পরিচালনা আরও উন্নতভাবে ম্যানেজ করতে সাহায্য করে। এটি কাজের জন্য থ্রেড পুলের সংখ্যা কাস্টমাইজ করতে পারে।

import java.util.concurrent.*

def threadPool = new ThreadPoolExecutor(2, 4, 1, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>())

// টাস্ক সাবমিট করা
threadPool.submit { println "Task 1 executed" }
threadPool.submit { println "Task 2 executed" }

threadPool.shutdown()

এখানে, ThreadPoolExecutor ব্যবহার করে একটি থ্রেড পুল তৈরি করা হয়েছে, যা 2 থেকে 4 থ্রেডের মধ্যে কাজ করতে পারে এবং প্রতি 1 সেকেন্ডে একটি নতুন থ্রেড তৈরি করবে।


4. Groovy এর Closures এবং Threads

Groovy তে closures ব্যবহার করে থ্রেড এবং Executors এর সঙ্গে কাজ আরও সহজ করা যায়। Groovy তে closures কে থ্রেড বা Executor এর মাধ্যমে পাঠানো সহজ এবং এর মাধ্যমে কোড আরও ক্লিন এবং সহজ হয়।

def task = { println "Running task in thread ${Thread.currentThread().name}" }

def executor = Executors.newFixedThreadPool(2)

executor.submit(task)
executor.submit(task)

executor.shutdown()

এখানে একটি closure তৈরি করা হয়েছে এবং সেটি submit মেথডের মাধ্যমে থ্রেডে পাঠানো হয়েছে।


সারসংক্ষেপ

বৈশিষ্ট্যThreadExecutor
থ্রেড ম্যানেজমেন্টএকক থ্রেড তৈরি ও চালানোএকাধিক থ্রেড তৈরি এবং ম্যানেজমেন্ট
ব্যবহারসরাসরি Thread ক্লাস দিয়ে থ্রেড পরিচালনাExecutorService দিয়ে থ্রেড পুল তৈরি এবং পরিচালনা
ব্যবহারিক সুবিধাসহজ এবং ছোট স্কেল কাজের জন্য উপযুক্তবৃহত্তর স্কেল এবং থ্রেড পুল ব্যবস্থাপনা

Groovy তে Threads এবং Executors ব্যবহারের মাধ্যমে পারলেল বা concurrrent কাজ সহজেই করা যায়। Thread দ্রুত এবং সরল কাজের জন্য উপযুক্ত, তবে ExecutorService বা ThreadPoolExecutor উন্নত থ্রেড পুল এবং কর্মসম্পাদন ব্যবস্থাপনার জন্য ব্যবহৃত হয়। Groovy তে এগুলোর ব্যবহারে কোড আরও সহজ, পরিষ্কার এবং কার্যকরী হয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion